<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Interactive BOM for KiCAD</title>
  <style type="text/css">
:root {
  --pcb-edge-color: black;
  --pad-color: #878787;
  --pad-hole-color: #CCCCCC;
  --pad-color-highlight: #D04040;
  --pad-color-highlight-both: #D0D040;
  --pad-color-highlight-marked: #44a344;
  --pin1-outline-color: #ffb629;
  --pin1-outline-color-highlight: #ffb629;
  --pin1-outline-color-highlight-both: #fcbb39;
  --pin1-outline-color-highlight-marked: #fdbe41;
  --silkscreen-edge-color: #aa4;
  --silkscreen-polygon-color: #4aa;
  --silkscreen-text-color: #4aa;
  --fabrication-edge-color: #907651;
  --fabrication-polygon-color: #907651;
  --fabrication-text-color: #a27c24;
  --track-color: #def5f1;
  --track-color-highlight: #D04040;
  --zone-color: #def5f1;
  --zone-color-highlight: #d0404080;
}

html,
body {
  margin: 0px;
  height: 100%;
  font-family: Verdana, sans-serif;
}

.dark.topmostdiv {
  --pcb-edge-color: #eee;
  --pad-color: #808080;
  --pin1-outline-color: #ffa800;
  --pin1-outline-color-highlight: #ccff00;
  --track-color: #42524f;
  --zone-color: #42524f;
  background-color: #252c30;
  color: #eee;
}

button {
  background-color: #eee;
  border: 1px solid #888;
  color: black;
  height: 44px;
  width: 44px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  font-weight: bolder;
}

.dark button {
  /* This will be inverted */
  background-color: #c3b7b5;
}

button.depressed {
  background-color: #0a0;
  color: white;
}

.dark button.depressed {
  /* This will be inverted */
  background-color: #b3b;
}

button:focus {
  outline: 0;
}

button#tb-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#lr-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#bom-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-grouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-ungrouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-netlist-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}

button#copy {
  background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
  background-position: 6px 6px;
  background-repeat: no-repeat;
  background-size: 26px 26px;
  border-radius: 6px;
  height: 40px;
  width: 40px;
  margin: 10px 5px;
}

button#copy:active {
  box-shadow: inset 0px 0px 5px #6c6c6c;
}

textarea.clipboard-temp {
  position: fixed;
  top: 0;
  left: 0;
  width: 2em;
  height: 2em;
  padding: 0;
  border: None;
  outline: None;
  box-shadow: None;
  background: transparent;
}

.left-most-button {
  border-right: 0;
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
}

.middle-button {
  border-right: 0;
}

.right-most-button {
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
}

.button-container {
  font-size: 0;
  margin: 10px 10px 10px 0px;
}

.dark .button-container {
  filter: invert(1);
}

.button-container button {
  background-size: 32px 32px;
  background-position: 5px 5px;
  background-repeat: no-repeat;
}

@media print {
  .hideonprint {
    display: none;
  }
}

canvas {
  cursor: crosshair;
}

canvas:active {
  cursor: grabbing;
}

.fileinfo {
  width: 100%;
  max-width: 1000px;
  border: none;
  padding: 5px;
}

.fileinfo .title {
  font-size: 20pt;
  font-weight: bold;
}

.fileinfo td {
  overflow: hidden;
  white-space: nowrap;
  max-width: 1px;
  width: 50%;
  text-overflow: ellipsis;
}

.bom {
  border-collapse: collapse;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 10pt;
  table-layout: fixed;
  width: 100%;
  margin-top: 1px;
  position: relative;
}

.bom th,
.bom td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

.dark .bom th,
.dark .bom td {
  border: 1px solid #777;
}

.bom th {
  background-color: #CCCCCC;
  background-clip: padding-box;
}

.dark .bom th {
  background-color: #3b4749;
}

.bom tr.highlighted:nth-child(n) {
  background-color: #cfc;
}

.dark .bom tr.highlighted:nth-child(n) {
  background-color: #226022;
}

.bom tr:nth-child(even) {
  background-color: #f2f2f2;
}

.dark .bom tr:nth-child(even) {
  background-color: #313b40;
}

.bom tr.checked {
  color: #1cb53d;
}

.dark .bom tr.checked {
  color: #2cce54;
}

.bom tr {
  transition: background-color 0.2s;
}

.bom .numCol {
  width: 30px;
}

.bom .value {
  width: 15%;
}

.bom .quantity {
  width: 65px;
}

.bom th .sortmark {
  position: absolute;
  right: 1px;
  top: 1px;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #221 transparent;
  transform-origin: 50% 85%;
  transition: opacity 0.2s, transform 0.4s;
}

.dark .bom th .sortmark {
  filter: invert(1);
}

.bom th .sortmark.none {
  opacity: 0;
}

.bom th .sortmark.desc {
  transform: rotate(180deg);
}

.bom th:hover .sortmark.none {
  opacity: 0.5;
}

.bom .bom-checkbox {
  width: 30px;
  position: relative;
  user-select: none;
  -moz-user-select: none;
}

.bom .bom-checkbox:before {
  content: "";
  position: absolute;
  border-width: 15px;
  border-style: solid;
  border-color: #51829f transparent transparent transparent;
  visibility: hidden;
  top: -15px;
}

.bom .bom-checkbox:after {
  content: "Double click to set/unset all";
  position: absolute;
  color: white;
  top: -35px;
  left: -26px;
  background: #51829f;
  padding: 5px 15px;
  border-radius: 8px;
  white-space: nowrap;
  visibility: hidden;
}

.bom .bom-checkbox:hover:before,
.bom .bom-checkbox:hover:after {
  visibility: visible;
  transition: visibility 0.2s linear 1s;
}

.split {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow-y: auto;
  overflow-x: hidden;
  background-color: inherit;
}

.split.split-horizontal,
.gutter.gutter-horizontal {
  height: 100%;
  float: left;
}

.gutter {
  background-color: #ddd;
  background-repeat: no-repeat;
  background-position: 50%;
  transition: background-color 0.3s;
}

.dark .gutter {
  background-color: #777;
}

.gutter.gutter-horizontal {
  background-image: url('');
  cursor: ew-resize;
  width: 5px;
}

.gutter.gutter-vertical {
  background-image: url('');
  cursor: ns-resize;
  height: 5px;
}

.searchbox {
  float: left;
  height: 40px;
  margin: 10px 5px;
  padding: 12px 32px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 18px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 6px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  background-image: url('');
  background-position: 10px 10px;
  background-repeat: no-repeat;
}

.dark .searchbox {
  background-color: #111;
  color: #eee;
}

.searchbox::placeholder {
  color: #ccc;
}

.dark .searchbox::placeholder {
  color: #666;
}

.filter {
  width: calc(60% - 64px);
}

.reflookup {
  width: calc(40% - 10px);
}

input[type=text]:focus {
  background-color: white;
  border: 1px solid #333;
}

.dark input[type=text]:focus {
  background-color: #333;
  border: 1px solid #ccc;
}

mark.highlight {
  background-color: #5050ff;
  color: #fff;
  padding: 2px;
  border-radius: 6px;
}

.dark mark.highlight {
  background-color: #76a6da;
  color: #111;
}

.menubtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
  background-position: center;
  background-repeat: no-repeat;
}

.statsbtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.iobtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.visbtn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  padding: 15px;
}

#vismenu-content {
  left: 0px;
  font-family: Verdana, sans-serif;
}

.dark .statsbtn,
.dark .savebtn,
.dark .menubtn,
.dark .iobtn,
.dark .visbtn {
  filter: invert(1);
}

.flexbox {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}

.savebtn {
  background-color: #d6d6d6;
  width: auto;
  height: 30px;
  flex-grow: 1;
  margin: 5px;
  border-radius: 4px;
}

.savebtn:active {
  background-color: #0a0;
  color: white;
}

.dark .savebtn:active {
  /* This will be inverted */
  background-color: #b3b;
}

.stats {
  border-collapse: collapse;
  font-size: 12pt;
  table-layout: fixed;
  width: 100%;
  min-width: 450px;
}

.dark .stats td {
  border: 1px solid #bbb;
}

.stats td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

#checkbox-stats div {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

#checkbox-stats .bar {
  background-color: rgba(28, 251, 0, 0.6);
}

.menu {
  position: relative;
  display: inline-block;
  margin: 10px 10px 10px 0px;
}

.menu-content {
  font-size: 12pt !important;
  text-align: left !important;
  font-weight: normal !important;
  display: none;
  position: absolute;
  background-color: white;
  right: 0;
  min-width: 300px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 100;
  padding: 8px;
}

.dark .menu-content {
  background-color: #111;
}

.menu:hover .menu-content {
  display: block;
}

.menu:hover .menubtn,
.menu:hover .iobtn,
.menu:hover .statsbtn {
  background-color: #eee;
}

.menu-label {
  display: inline-block;
  padding: 8px;
  border: 1px solid #ccc;
  border-top: 0;
  width: calc(100% - 18px);
}

.menu-label-top {
  border-top: 1px solid #ccc;
}

.menu-textbox {
  float: left;
  height: 24px;
  margin: 10px 5px;
  padding: 5px 5px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 14px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 4px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  width: calc(100% - 10px);
}

.menu-textbox.invalid,
.dark .menu-textbox.invalid {
  color: red;
}

.dark .menu-textbox {
  background-color: #222;
  color: #eee;
}

.radio-container {
  margin: 4px;
}

.topmostdiv {
  width: 100%;
  height: 100%;
  background-color: white;
  transition: background-color 0.3s;
}

#top {
  height: 78px;
  border-bottom: 2px solid black;
}

.dark #top {
  border-bottom: 2px solid #ccc;
}

#dbg {
  display: block;
}

::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: #aaa;
}

::-webkit-scrollbar-thumb {
  background: #666;
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: #555;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  margin: 3px 0;
  padding: 0;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
  border-radius: 3px;
}

.slider:hover {
  opacity: 1;
}

.slider:focus {
  outline: none;
}

.slider::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  width: 100%;
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
  border: none;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin-top: -4px;
}

.dark .slider::-webkit-slider-thumb {
  background: #3d3;
}

.slider::-moz-range-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
}

.slider::-moz-range-track {
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
}

.dark .slider::-moz-range-thumb {
  background: #3d3;
}

.slider::-ms-track {
  width: 100%;
  height: 8px;
  border-width: 3px 0;
  background: transparent;
  border-color: transparent;
  color: transparent;
  transition: opacity .2s;
}

.slider::-ms-fill-lower {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-fill-upper {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin: 0;
}

.shameless-plug {
  font-size: 0.8em;
  text-align: center;
  display: block;
}

a {
  color: #0278a4;
}

.dark a {
  color: #00b9fd;
}

#frontcanvas,
#backcanvas {
  touch-action: none;
}

.placeholder {
  border: 1px dashed #9f9fda !important;
  background-color: #edf2f7 !important;
}

.dragging {
  z-index: 999;
}

.dark .dragging>table>tbody>tr {
  background-color: #252c30;
}

.dark .placeholder {
  filter: invert(1);
}

.column-spacer {
  top: 0;
  left: 0;
  width: calc(100% - 4px);
  position: absolute;
  cursor: pointer;
  user-select: none;
  height: 100%;
}

.column-width-handle {
  top: 0;
  right: 0;
  width: 4px;
  position: absolute;
  cursor: col-resize;
  user-select: none;
  height: 100%;
}

.column-width-handle:hover {
  background-color: #4f99bd;
}


  </style>
  <script type="text/javascript" >
///////////////////////////////////////////////
/*
  Split.js - v1.3.5
  MIT License
  https://github.com/nathancahill/Split.js
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});

///////////////////////////////////////////////

///////////////////////////////////////////////
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
// This work is free. You can redistribute it and/or modify it
// under the terms of the WTFPL, Version 2
// For more information see LICENSE.txt or http://www.wtfpl.net/
//
// For more information, the home page:
// http://pieroxy.net/blog/pages/lz-string/testing.html
//
// LZ-based compression algorithm, version 1.4.4
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
///////////////////////////////////////////////

///////////////////////////////////////////////
/*!
 * PEP v0.4.3 | https://github.com/jquery/PEP
 * Copyright jQuery Foundation and other contributors | http://jquery.org/license
 */
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
for(var b=a;b.parentNode;)b=b.parentNode;
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
//
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
var b=x(a,this.findElements,this);
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
b=!1;else if("XY"===c)
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
vacuumTouches:function(a){var b=a.touches;
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
if(this.isPrimaryTouch(c)){
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});

///////////////////////////////////////////////

///////////////////////////////////////////////
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "fields": ["Value", "Footprint"]}
///////////////////////////////////////////////

///////////////////////////////////////////////
var pcbdata = JSON.parse(LZString.decompressFromBase64("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kZdCh2qgnQYhIJyBEjCcdJ8wnBoRarhonowDzx7on1sdLxwh4K8cgAGvHEMcbx2wA7sdsAJ7HVQB7x/vHJ8dsAGfHxkeYx+kR50gSdHdIm4CRxxB4P8ShcD14fHQAJzXoqlC5CEooo8f7AB/HGcemJ93HnwC+TOYnSVw6pughYFqsx8/HUoRnFNKMesfeAGAnbAD1AAQAXICqgFon5wjIgA7H6W5bAFsATifgJ78n9QD/J6vHIKdgpzYnO4ijREqIeictx8vHbIBdx+0AdUfqALcnDMdNSJzY3UgcOHdIRcevJ4inwCddRzzHEKd/Jw4AAKcvAECnMKfLgGCnXycgAD8nlKefADOA9KdEpwin/yhIp0MnBie32ldHVycYpz3HmMetXd1IoWRHaBynaQATlKSn3Mc9R31H1Kd4iJbHgyeLx7ynZHY6eMYnWTnop+YAd0c4p/yy7mbY/L2xEqfpRPYnMrgyp99Hcqdix9onEsfKpy2afKdopwKnWqdCp1HHS+F6p398Bqfwp5Kn/ETGpzwYZKeyp79HXwiKp8inwyeXR3an1UffxzqnyNwup2Knhydax5xkXqd+gD6nZqd+pwqnOieBpyqnIychp4rH1yd3J73ykacgetGnuISxp9Kn+seMp9PHFqd/RymnPKc2p6inVQCap9qnOceeiGZkoqd5p9YnLyepiFKniUfep6anvMe1x2Wn/qcVp9anXifVp6AAtaeOpyp4Gf65pxz2LaeXdm2nnqdFp58n5Ke4x+anFsf9p0DHVafppzWn9qd1pxfHhClLyCGBk6fNAO6nRqdzp80AJac9p8unVqerp4On66fDp5uno6cBtB3Ie6dup62nHqc0FMenFccLp2MAZ6cDJ6mna6fBpxunoadmJzqnIqePp+Knh6ftp6pIGKgJp92nS6ffp5WnV6d/pzenAGdZp+GnVpBNp/unzyfTpy+nVC0dp/GnXadYgKWn56dNx5enIMf8p0hngqfZx9unO8g1hCBn+afhJ+BnF3bqgFBn+Gdfp5anRGf6J7+ndscZpzdH5GfZpwwMaGdPp5hnhac4Z4xneGeLp0mnLYABp3BnJGdcZ2Gn9acImw+nPy0CZ8XMQmcQZyanxacfpwRnsGcDp9Jn/6eZpzxn4afPxPxnoGfPpypnDGdbR0xnYmf9R6xnC8fEZ+NHSW6IZ3pnDqcUZ8K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gpvS3jQ4Px8pEzLcTWctuR+eZN+lX2TcgtyM3J3aZ2c3tq8wSp3Tkq9fdN0q35zdmN0sXardUVxq3wqdDFKDoAZrbF+6nSbftl8K3dNdGtwzXJDcNN1hXTUizgnm3vmDAF0W3wNfZlxPXpbeOt+W3Z2dZV3PX+po1t/S0CbeFt4lEybf41w63XZcqtwXn1Vedt6/Yubc9twW3z6cNt9qXTbeptys3FVdrNzG3K5qZ2RuM07eYZ7O3Zcdm1823yrdOtyDnVzf8V2S34tdsAHDnYjcRN17n6GBMOLVZ8TfdOhRWad60Z3eIXRfluxk3HLeRt1y3RZe0aK9oDTkkRHpXCWTAJ4c3rxe9Nyc3njd7t223dTeZtz3Xf+dVt6K8zxj70JoU9jdOV/+3veeAd5CX7xchF2B3fNcmt2O3jTeBWJIXBiDX5+6nKcYAd1038zfHN07nXjdlt1h3Fbemt1K3TJfftxU4oUB/t3TgJHfYl+R3izeYdz43l0cutzc3vVd3N0I3n6cYF4jHOgCRV5BXr9h+IxXZRVABtxMMo9ZplzC3E1m6xEC3Ubc4dzB321mZcGPVWcjWt7On1NeuN0Y3wHcUdwM3KNe3V5VXRLeSt+O3q0hYhZJ3CWByt6+nOncpt0RX+neLN4Z33jfGd9x3h7f+N4OX9zcet1iAPscRVxOXEjccLExAFDntw9J3JoSNZkhX1BfKV8HnEbfLVxhX0Hd3Jy6+jYrdsXSQDVeYZzIXwNdsd453Shecd653hLcSt5W3CXdm7EAYj5jHUMx3fhd2d2R3WXcmVzl3Qzdud/5XJJeut8e3Dze+x9SXiOfiN2J3fEhaK8NRoXfZXY/HSFcLV4C3trcxd8C3KndU52mwGTWIdwgn8NelN6R39rcit+m3qreyx6Z3BXc5V4WwE3dbV1TXM3fvVzV3BLcIl1DXFuduBwKolNcGIKx3Jbc7d0u3Rpcrt9yIjWdHd45XU3ebd50323dptyO3ahcrd8rnN3epNXd3F1cndyh3s3c+Z0O3RDf7t6O3Hbe4d4d3n3f+5xGXnNcSqKh3YNe1N693tHfmd2+jskiJNV93QNePd2d3z3dA9/D3o3erd5c9KPcQ9+WXD3ezN393vqctt8O3WPedV/V33Ve8d263XnfCN/DndJcXtxbnmDRYKHQoSoi3t0oGHYqf+lkYRKfXNG7IGKB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"))
///////////////////////////////////////////////

///////////////////////////////////////////////
/* Utility functions */

var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
  pcbdata.metadata.revision + '__#';
var storage;

function initStorage(key) {
  try {
    window.localStorage.getItem("blank");
    storage = window.localStorage;
  } catch (e) {
    // localStorage not available
  }
  if (!storage) {
    try {
      window.sessionStorage.getItem("blank");
      storage = window.sessionStorage;
    } catch (e) {
      // sessionStorage also not available
    }
  }
}

function readStorage(key) {
  if (storage) {
    return storage.getItem(storagePrefix + key);
  } else {
    return null;
  }
}

function writeStorage(key, value) {
  if (storage) {
    storage.setItem(storagePrefix + key, value);
  }
}

function fancyDblClickHandler(el, onsingle, ondouble) {
  return function() {
    if (el.getAttribute("data-dblclick") == null) {
      el.setAttribute("data-dblclick", 1);
      setTimeout(function() {
        if (el.getAttribute("data-dblclick") == 1) {
          onsingle();
        }
        el.removeAttribute("data-dblclick");
      }, 200);
    } else {
      el.removeAttribute("data-dblclick");
      ondouble();
    }
  }
}

function smoothScrollToRow(rowid) {
  document.getElementById(rowid).scrollIntoView({
    behavior: "smooth",
    block: "center",
    inline: "nearest"
  });
}

function focusInputField(input) {
  input.scrollIntoView(false);
  input.focus();
  input.select();
}

function copyToClipboard() {
  var text = '';
  for (var node of bomhead.childNodes[0].childNodes) {
    if (node.firstChild) {
      text = text + node.firstChild.nodeValue;
    }
    if (node != bomhead.childNodes[0].lastChild) {
      text += '\t';
    }
  }
  text += '\n';
  for (var row of bombody.childNodes) {
    for (var cell of row.childNodes) {
      for (var node of cell.childNodes) {
        if (node.nodeName == "INPUT") {
          if (node.checked) {
            text = text + '✓';
          }
        } else if (node.nodeName == "MARK") {
          text = text + node.firstChild.nodeValue;
        } else {
          text = text + node.nodeValue;
        }
      }
      if (cell != row.lastChild) {
        text += '\t';
      }
    }
    text += '\n';
  }
  var textArea = document.createElement("textarea");
  textArea.classList.add('clipboard-temp');
  textArea.value = text;

  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    if (document.execCommand('copy')) {
      console.log('Bom copied to clipboard.');
    }
  } catch (err) {
    console.log('Can not copy to clipboard.');
  }

  document.body.removeChild(textArea);
}

function removeGutterNode(node) {
  for (var i = 0; i < node.childNodes.length; i++) {
    if (node.childNodes[i].classList &&
      node.childNodes[i].classList.contains("gutter")) {
      node.removeChild(node.childNodes[i]);
      break;
    }
  }
}

function cleanGutters() {
  removeGutterNode(document.getElementById("bot"));
  removeGutterNode(document.getElementById("canvasdiv"));
}

var units = {
  prefixes: {
    giga: ["G", "g", "giga", "Giga", "GIGA"],
    mega: ["M", "mega", "Mega", "MEGA"],
    kilo: ["K", "k", "kilo", "Kilo", "KILO"],
    milli: ["m", "milli", "Milli", "MILLI"],
    micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
    nano: ["N", "n", "nano", "Nano", "NANO"],
    pico: ["P", "p", "pico", "Pico", "PICO"],
  },
  unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
  unitsLong: [
    "OHM", "Ohm", "ohm", "ohms",
    "FARAD", "Farad", "farad",
    "HENRY", "Henry", "henry"
  ],
  getMultiplier: function(s) {
    if (this.prefixes.giga.includes(s)) return 1e9;
    if (this.prefixes.mega.includes(s)) return 1e6;
    if (this.prefixes.kilo.includes(s)) return 1e3;
    if (this.prefixes.milli.includes(s)) return 1e-3;
    if (this.prefixes.micro.includes(s)) return 1e-6;
    if (this.prefixes.nano.includes(s)) return 1e-9;
    if (this.prefixes.pico.includes(s)) return 1e-12;
    return 1;
  },
  valueRegex: null,
}

function initUtils() {
  var allPrefixes = units.prefixes.giga
    .concat(units.prefixes.mega)
    .concat(units.prefixes.kilo)
    .concat(units.prefixes.milli)
    .concat(units.prefixes.micro)
    .concat(units.prefixes.nano)
    .concat(units.prefixes.pico);
  var allUnits = units.unitsShort.concat(units.unitsLong);
  units.valueRegex = new RegExp("^([0-9\.]+)" +
    "\\s*(" + allPrefixes.join("|") + ")?" +
    "(" + allUnits.join("|") + ")?" +
    "(\\b.*)?$", "");
  units.valueAltRegex = new RegExp("^([0-9]*)" +
    "(" + units.unitsShort.join("|") + ")?" +
    "([GgMmKkUuNnPp])?" +
    "([0-9]*)" +
    "(\\b.*)?$", "");
  if (config.fields.includes("Value")) {
    var index = config.fields.indexOf("Value");
    pcbdata.bom["parsedValues"] = {};
    for (var id in pcbdata.bom.fields) {
      pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
    }
  }
}

function parseValue(val, ref) {
  var inferUnit = (unit, ref) => {
    if (unit) {
      unit = unit.toLowerCase();
      if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
        unit = 'r';
      }
      unit = unit[0];
    } else {
      ref = /^([a-z]+)\d+$/i.exec(ref);
      if (ref) {
        ref = ref[1].toLowerCase();
        if (ref == "c") unit = 'f';
        else if (ref == "l") unit = 'h';
        else if (ref == "r" || ref == "rv") unit = 'r';
        else unit = null;
      }
    }
    return unit;
  };
  val = val.replace(/,/g, "");
  var match = units.valueRegex.exec(val);
  var unit;
  if (match) {
    val = parseFloat(match[1]);
    if (match[2]) {
      val = val * units.getMultiplier(match[2]);
    }
    unit = inferUnit(match[3], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[4],
    }
  }
  match = units.valueAltRegex.exec(val);
  if (match && (match[1] || match[4])) {
    val = parseFloat(match[1] + "." + match[4]);
    if (match[3]) {
      val = val * units.getMultiplier(match[3]);
    }
    unit = inferUnit(match[2], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[5],
    }
  }
  return null;
}

function valueCompare(a, b, stra, strb) {
  if (a === null && b === null) {
    // Failed to parse both values, compare them as strings.
    if (stra != strb) return stra > strb ? 1 : -1;
    else return 0;
  } else if (a === null) {
    return 1;
  } else if (b === null) {
    return -1;
  } else {
    if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
    else if (a.val != b.val) return a.val > b.val ? 1 : -1;
    else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
    else return 0;
  }
}

function validateSaveImgDimension(element) {
  var valid = false;
  var intValue = 0;
  if (/^[1-9]\d*$/.test(element.value)) {
    intValue = parseInt(element.value);
    if (intValue <= 16000) {
      valid = true;
    }
  }
  if (valid) {
    element.classList.remove("invalid");
  } else {
    element.classList.add("invalid");
  }
  return intValue;
}

function saveImage(layer) {
  var width = validateSaveImgDimension(document.getElementById("render-save-width"));
  var height = validateSaveImgDimension(document.getElementById("render-save-height"));
  var bgcolor = null;
  if (!document.getElementById("render-save-transparent").checked) {
    var style = getComputedStyle(topmostdiv);
    bgcolor = style.getPropertyValue("background-color");
  }
  if (!width || !height) return;

  // Prepare image
  var canvas = document.createElement("canvas");
  var layerdict = {
    transform: {
      x: 0,
      y: 0,
      s: 1,
      panx: 0,
      pany: 0,
      zoom: 1,
    },
    bg: canvas,
    fab: canvas,
    silk: canvas,
    highlight: canvas,
    layer: layer,
  }
  // Do the rendering
  recalcLayerScale(layerdict, width, height);
  prepareLayer(layerdict);
  clearCanvas(canvas, bgcolor);
  drawBackground(layerdict, false);
  drawHighlightsOnLayer(layerdict, false);

  // Save image
  var imgdata = canvas.toDataURL("image/png");

  var filename = pcbdata.metadata.title;
  if (pcbdata.metadata.revision) {
    filename += `.${pcbdata.metadata.revision}`;
  }
  filename += `.${layer}.png`;
  saveFile(filename, dataURLtoBlob(imgdata));
}

function saveSettings() {
  var data = {
    type: "InteractiveHtmlBom settings",
    version: 1,
    pcbmetadata: pcbdata.metadata,
    settings: settings,
  }
  var blob = new Blob([JSON.stringify(data, null, 4)], {
    type: "application/json"
  });
  saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
}

function loadSettings() {
  var input = document.createElement("input");
  input.type = "file";
  input.accept = ".settings.json";
  input.onchange = function(e) {
    var file = e.target.files[0];
    var reader = new FileReader();
    reader.onload = readerEvent => {
      var content = readerEvent.target.result;
      var newSettings;
      try {
        newSettings = JSON.parse(content);
      } catch (e) {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      if (newSettings.type != "InteractiveHtmlBom settings") {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
      if (metadataMatches) {
        for (var k in pcbdata.metadata) {
          if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
            metadataMatches = false;
          }
        }
      }
      if (!metadataMatches) {
        var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
        var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
        if (!confirm(
            `Settins file metadata does not match current metadata.\n\n` +
            `Page metadata:\n${currentMetadata}\n\n` +
            `Settings file metadata:\n${fileMetadata}\n\n` +
            `Press OK if you would like to import settings anyway.`)) {
          return;
        }
      }
      overwriteSettings(newSettings.settings);
    }
    reader.readAsText(file, 'UTF-8');
  }
  input.click();
}

function overwriteSettings(newSettings) {
  initDone = false;
  Object.assign(settings, newSettings);
  writeStorage("bomlayout", settings.bomlayout);
  writeStorage("bommode", settings.bommode);
  writeStorage("canvaslayout", settings.canvaslayout);
  writeStorage("bomCheckboxes", settings.checkboxes.join(","));
  document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
  for (var checkbox of settings.checkboxes) {
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
  }
  writeStorage("markWhenChecked", settings.markWhenChecked);
  padsVisible(settings.renderPads);
  document.getElementById("padsCheckbox").checked = settings.renderPads;
  fabricationVisible(settings.renderFabrication);
  document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
  silkscreenVisible(settings.renderSilkscreen);
  document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
  referencesVisible(settings.renderReferences);
  document.getElementById("referencesCheckbox").checked = settings.renderReferences;
  valuesVisible(settings.renderValues);
  document.getElementById("valuesCheckbox").checked = settings.renderValues;
  tracksVisible(settings.renderTracks);
  document.getElementById("tracksCheckbox").checked = settings.renderTracks;
  zonesVisible(settings.renderZones);
  document.getElementById("zonesCheckbox").checked = settings.renderZones;
  dnpOutline(settings.renderDnpOutline);
  document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
  setRedrawOnDrag(settings.redrawOnDrag);
  document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
  setDarkMode(settings.darkMode);
  document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
  setHighlightPin1(settings.highlightpin1);
  document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
  showFootprints(settings.show_footprints);
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  initDone = true;
  prepCheckboxes();
  changeBomLayout(settings.bomlayout);
}

function saveFile(filename, blob) {
  var link = document.createElement("a");
  var objurl = URL.createObjectURL(blob);
  link.download = filename;
  link.href = objurl;
  link.click();
}

function dataURLtoBlob(dataurl) {
  var arr = dataurl.split(','),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {
    type: mime
  });
}

var settings = {
  canvaslayout: "default",
  bomlayout: "default",
  bommode: "grouped",
  checkboxes: [],
  checkboxStoredRefs: {},
  darkMode: false,
  highlightpin1: false,
  redrawOnDrag: true,
  boardRotation: 0,
  renderPads: true,
  renderReferences: true,
  renderValues: true,
  renderSilkscreen: true,
  renderFabrication: true,
  renderDnpOutline: false,
  renderTracks: true,
  renderZones: true,
  columnOrder: [],
  hiddenColumns: [],
}

function initDefaults() {
  settings.bomlayout = readStorage("bomlayout");
  if (settings.bomlayout === null) {
    settings.bomlayout = config.bom_view;
  }
  if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
    settings.bomlayout = config.bom_view;
  }
  settings.bommode = readStorage("bommode");
  if (settings.bommode === null) {
    settings.bommode = "grouped";
  }
  if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
    settings.bommode = "grouped";
  }
  settings.canvaslayout = readStorage("canvaslayout");
  if (settings.canvaslayout === null) {
    settings.canvaslayout = config.layer_view;
  }
  var bomCheckboxes = readStorage("bomCheckboxes");
  if (bomCheckboxes === null) {
    bomCheckboxes = config.checkboxes;
  }
  settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
  document.getElementById("bomCheckboxes").value = bomCheckboxes;

  settings.markWhenChecked = readStorage("markWhenChecked") || "";
  populateMarkWhenCheckedOptions();

  function initBooleanSetting(storageString, def, elementId, func) {
    var b = readStorage(storageString);
    if (b === null) {
      b = def;
    } else {
      b = (b == "true");
    }
    document.getElementById(elementId).checked = b;
    func(b);
  }

  initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
  initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
  initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
  initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
  initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
  if ("tracks" in pcbdata) {
    initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
    initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
  } else {
    document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
    tracksVisible(false);
    zonesVisible(false);
  }
  initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
  initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
  initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
  initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);

  var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
  var hcols = JSON.parse(readStorage("hiddenColumns"));
  if (hcols === null) {
    hcols = [];
  }
  settings.hiddenColumns = hcols.filter(e => fields.includes(e));

  var cord = JSON.parse(readStorage("columnOrder"));
  if (cord === null) {
    cord = fields;
  } else {
    cord = cord.filter(e => fields.includes(e));
    if (cord.length != fields.length)
      cord = fields;
  }
  settings.columnOrder = cord;

  settings.boardRotation = readStorage("boardRotation");
  if (settings.boardRotation === null) {
    settings.boardRotation = config.board_rotation * 5;
  } else {
    settings.boardRotation = parseInt(settings.boardRotation);
  }
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
}

// Helper classes for user js callbacks.

const IBOM_EVENT_TYPES = {
  ALL: "all",
  HIGHLIGHT_EVENT: "highlightEvent",
  CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
  BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
}

const EventHandler = {
  callbacks: {},
  init: function() {
    for (eventType of Object.values(IBOM_EVENT_TYPES))
      this.callbacks[eventType] = [];
  },
  registerCallback: function(eventType, callback) {
    this.callbacks[eventType].push(callback);
  },
  emitEvent: function(eventType, eventArgs) {
    event = {
      eventType: eventType,
      args: eventArgs,
    }
    var callback;
    for (callback of this.callbacks[eventType])
      callback(event);
    for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
      callback(event);
  }
}
EventHandler.init();

///////////////////////////////////////////////

///////////////////////////////////////////////
/* PCB rendering code */

var emptyContext2d = document.createElement("canvas").getContext("2d");

function deg2rad(deg) {
  return deg * Math.PI / 180;
}

function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
  var point = [
    linepoint[0] * text.width + offsetx,
    linepoint[1] * text.height + offsety
  ];
  // This approximates pcbnew behavior with how text tilts depending on horizontal justification
  point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
  return point;
}

function drawText(ctx, text, color) {
  if ("ref" in text && !settings.renderReferences) return;
  if ("val" in text && !settings.renderValues) return;
  ctx.save();
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  ctx.lineWidth = text.thickness;
  if ("svgpath" in text) {
    ctx.stroke(new Path2D(text.svgpath));
    ctx.restore();
    return;
  }
  ctx.translate(...text.pos);
  ctx.translate(text.thickness * 0.5, 0);
  var angle = -text.angle;
  if (text.attr.includes("mirrored")) {
    ctx.scale(-1, 1);
    angle = -angle;
  }
  var tilt = 0;
  if (text.attr.includes("italic")) {
    tilt = 0.125;
  }
  var interline = text.height * 1.5 + text.thickness;
  var txt = text.text.split("\n");
  // KiCad ignores last empty line.
  if (txt[txt.length - 1] == '') txt.pop();
  ctx.rotate(deg2rad(angle));
  var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
  offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
  for (var i in txt) {
    var lineWidth = text.thickness + interline / 2 * tilt;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        lineWidth += fourSpaces - lineWidth % fourSpaces;
      } else {
        if (txt[i][j] == '~') {
          j++;
          if (j == txt[i].length)
            break;
        }
        lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
      }
    }
    var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
    var inOverbar = false;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        offsetx += fourSpaces - offsetx % fourSpaces;
        continue;
      } else if (txt[i][j] == '~') {
        j++;
        if (j == txt[i].length)
          break;
        if (txt[i][j] != '~') {
          inOverbar = !inOverbar;
        }
      }
      var glyph = pcbdata.font_data[txt[i][j]];
      if (inOverbar) {
        var overbarStart = [offsetx, -text.height * 1.4 + offsety];
        var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];

        if (!lastHadOverbar) {
          overbarStart[0] += text.height * 1.4 * tilt;
          lastHadOverbar = true;
        }
        ctx.beginPath();
        ctx.moveTo(...overbarStart);
        ctx.lineTo(...overbarEnd);
        ctx.stroke();
      } else {
        lastHadOverbar = false;
      }
      for (var line of glyph.l) {
        ctx.beginPath();
        ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
        for (var k = 1; k < line.length; k++) {
          ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
        }
        ctx.stroke();
      }
      offsetx += glyph.w * text.width;
    }
    offsety += interline;
  }
  ctx.restore();
}

function drawedge(ctx, scalefactor, edge, color) {
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  if ("svgpath" in edge) {
    ctx.stroke(new Path2D(edge.svgpath));
  } else {
    ctx.beginPath();
    if (edge.type == "segment") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(...edge.end);
    }
    if (edge.type == "rect") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(edge.start[0], edge.end[1]);
      ctx.lineTo(...edge.end);
      ctx.lineTo(edge.end[0], edge.start[1]);
      ctx.lineTo(...edge.start);
    }
    if (edge.type == "arc") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        deg2rad(edge.startangle),
        deg2rad(edge.endangle));
    }
    if (edge.type == "circle") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        0, 2 * Math.PI);
      ctx.closePath();
    }
    if (edge.type == "curve") {
      ctx.moveTo(...edge.start);
      ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
    }
    if("filled" in edge && edge.filled)
      ctx.fill();
    else
      ctx.stroke();
  }
}

function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
  // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
  var path = new Path2D();
  var width = size[0];
  var height = size[1];
  var x = width * -0.5;
  var y = height * -0.5;
  var chamfOffset = Math.min(width, height) * chamfratio;
  path.moveTo(x, 0);
  if (chamfpos & 4) {
    path.lineTo(x, y + height - chamfOffset);
    path.lineTo(x + chamfOffset, y + height);
    path.lineTo(0, y + height);
  } else {
    path.arcTo(x, y + height, x + width, y + height, radius);
  }
  if (chamfpos & 8) {
    path.lineTo(x + width - chamfOffset, y + height);
    path.lineTo(x + width, y + height - chamfOffset);
    path.lineTo(x + width, 0);
  } else {
    path.arcTo(x + width, y + height, x + width, y, radius);
  }
  if (chamfpos & 2) {
    path.lineTo(x + width, y + chamfOffset);
    path.lineTo(x + width - chamfOffset, y);
    path.lineTo(0, y);
  } else {
    path.arcTo(x + width, y, x, y, radius);
  }
  if (chamfpos & 1) {
    path.lineTo(x + chamfOffset, y);
    path.lineTo(x, y + chamfOffset);
    path.lineTo(x, 0);
  } else {
    path.arcTo(x, y, x, y + height, radius);
  }
  path.closePath();
  return path;
}

function getOblongPath(size) {
  return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
}

function getPolygonsPath(shape) {
  if (shape.path2d) {
    return shape.path2d;
  }
  if ("svgpath" in shape) {
    shape.path2d = new Path2D(shape.svgpath);
  } else {
    var path = new Path2D();
    for (var polygon of shape.polygons) {
      path.moveTo(...polygon[0]);
      for (var i = 1; i < polygon.length; i++) {
        path.lineTo(...polygon[i]);
      }
      path.closePath();
    }
    shape.path2d = path;
  }
  return shape.path2d;
}

function drawPolygonShape(ctx, scalefactor, shape, color) {
  ctx.save();
  if (!("svgpath" in shape)) {
    ctx.translate(...shape.pos);
    ctx.rotate(deg2rad(-shape.angle));
  }
  if("filled" in shape && !shape.filled) {
    ctx.strokeStyle = color;
    ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
    ctx.lineCap = "round";
    ctx.lineJoin = "round";
    ctx.stroke(getPolygonsPath(shape));
  } else {
    ctx.fillStyle = color;
    ctx.fill(getPolygonsPath(shape));
  }
  ctx.restore();
}

function drawDrawing(ctx, scalefactor, drawing, color) {
  if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
    drawedge(ctx, scalefactor, drawing, color);
  } else if (drawing.type == "polygon") {
    drawPolygonShape(ctx, scalefactor, drawing, color);
  } else {
    drawText(ctx, drawing, color);
  }
}

function getCirclePath(radius) {
  var path = new Path2D();
  path.arc(0, 0, radius, 0, 2 * Math.PI);
  path.closePath();
  return path;
}

function getCachedPadPath(pad) {
  if (!pad.path2d) {
    // if path2d is not set, build one and cache it on pad object
    if (pad.shape == "rect") {
      pad.path2d = new Path2D();
      pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
    } else if (pad.shape == "oval") {
      pad.path2d = getOblongPath(pad.size);
    } else if (pad.shape == "circle") {
      pad.path2d = getCirclePath(pad.size[0] / 2);
    } else if (pad.shape == "roundrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
    } else if (pad.shape == "chamfrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
    } else if (pad.shape == "custom") {
      pad.path2d = getPolygonsPath(pad);
    }
  }
  return pad.path2d;
}

function drawPad(ctx, pad, color, outline) {
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.angle));
  if (pad.offset) {
    ctx.translate(...pad.offset);
  }
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  var path = getCachedPadPath(pad);
  if (outline) {
    ctx.stroke(path);
  } else {
    ctx.fill(path);
  }
  ctx.restore();
}

function drawPadHole(ctx, pad, padHoleColor) {
  if (pad.type != "th") return;
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.angle));
  ctx.fillStyle = padHoleColor;
  if (pad.drillshape == "oblong") {
    ctx.fill(getOblongPath(pad.drillsize));
  } else {
    ctx.fill(getCirclePath(pad.drillsize[0] / 2));
  }
  ctx.restore();
}

function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
  if (highlight) {
    // draw bounding box
    if (footprint.layer == layer) {
      ctx.save();
      ctx.globalAlpha = 0.2;
      ctx.translate(...footprint.bbox.pos);
      ctx.rotate(deg2rad(-footprint.bbox.angle));
      ctx.translate(...footprint.bbox.relpos);
      ctx.fillStyle = colors.pad;
      ctx.fillRect(0, 0, ...footprint.bbox.size);
      ctx.globalAlpha = 1;
      ctx.strokeStyle = colors.pad;
      ctx.strokeRect(0, 0, ...footprint.bbox.size);
      ctx.restore();
    }
  }
  // draw drawings
  for (var drawing of footprint.drawings) {
    if (drawing.layer == layer) {
      drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
    }
  }
  // draw pads
  if (settings.renderPads) {
    for (var pad of footprint.pads) {
      if (pad.layers.includes(layer)) {
        drawPad(ctx, pad, colors.pad, outline);
        if (pad.pin1 && settings.highlightpin1) {
          drawPad(ctx, pad, colors.outline, true);
        }
      }
    }
    for (var pad of footprint.pads) {
      drawPadHole(ctx, pad, colors.padHole);
    }
  }
}

function drawEdgeCuts(canvas, scalefactor) {
  var ctx = canvas.getContext("2d");
  var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
  for (var edge of pcbdata.edges) {
    drawDrawing(ctx, scalefactor, edge, edgecolor);
  }
}

function drawFootprints(canvas, layer, scalefactor, highlight) {
  var ctx = canvas.getContext("2d");
  ctx.lineWidth = 3 / scalefactor;
  var style = getComputedStyle(topmostdiv);

  var colors = {
    pad: style.getPropertyValue('--pad-color'),
    padHole: style.getPropertyValue('--pad-hole-color'),
    outline: style.getPropertyValue('--pin1-outline-color'),
  }

  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var mod = pcbdata.footprints[i];
    var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
    var h = highlightedFootprints.includes(i);
    var d = markedFootprints.has(i);
    if (highlight) {
      if(h && d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-both');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
      } else if (h) {
        colors.pad = style.getPropertyValue('--pad-color-highlight');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
      } else if (d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
      }
    }
    if( h || d || !highlight) {
      drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
    }
  }
}

function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
  var ctx = canvas.getContext("2d");
  for (var d of pcbdata.drawings[layername][layer]) {
    if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
      drawedge(ctx, scalefactor, d, edgeColor);
    } else if (d.type == "polygon") {
      drawPolygonShape(ctx, scalefactor, d, polygonColor);
    } else {
      drawText(ctx, d, textColor);
    }
  }
}

function drawTracks(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  for (var track of pcbdata.tracks[layer]) {
    if (highlight && highlightedNet != track.net) continue;
    ctx.lineWidth = track.width;
    ctx.beginPath();
    if ('radius' in track) {
      ctx.arc(
        ...track.center,
        track.radius,
        deg2rad(track.startangle),
        deg2rad(track.endangle));
    } else {
      ctx.moveTo(...track.start);
      ctx.lineTo(...track.end);
    }
    ctx.stroke();
  }
}

function drawZones(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineJoin = "round";
  for (var zone of pcbdata.zones[layer]) {
    if (!zone.path2d) {
      zone.path2d = getPolygonsPath(zone);
    }
    if (highlight && highlightedNet != zone.net) continue;
    ctx.fill(zone.path2d);
    if (zone.width > 0) {
      ctx.lineWidth = zone.width;
      ctx.stroke(zone.path2d);
    }
  }
}

function clearCanvas(canvas, color = null) {
  var ctx = canvas.getContext("2d");
  ctx.save();
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  if (color) {
    ctx.fillStyle = color;
    ctx.fillRect(0, 0, canvas.width, canvas.height);
  } else {
    if (!window.matchMedia("print").matches)
      ctx.clearRect(0, 0, canvas.width, canvas.height);
  }
  ctx.restore();
}

function drawNets(canvas, layer, highlight) {
  var style = getComputedStyle(topmostdiv);
  if (settings.renderTracks) {
    var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
    drawTracks(canvas, layer, trackColor, highlight);
  }
  if (settings.renderZones) {
    var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
    drawZones(canvas, layer, zoneColor, highlight);
  }
  if (highlight && settings.renderPads) {
    var padColor = style.getPropertyValue('--pad-color-highlight');
    var padHoleColor = style.getPropertyValue('--pad-hole-color');
    var ctx = canvas.getContext("2d");
    for (var footprint of pcbdata.footprints) {
      // draw pads
      var padDrawn = false;
      for (var pad of footprint.pads) {
        if (highlightedNet != pad.net) continue;
        if (pad.layers.includes(layer)) {
          drawPad(ctx, pad, padColor, false);
          padDrawn = true;
        }
      }
      if (padDrawn) {
        // redraw all pad holes because some pads may overlap
        for (var pad of footprint.pads) {
          drawPadHole(ctx, pad, padHoleColor);
        }
      }
    }
  }
}

function drawHighlightsOnLayer(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.highlight);
  }
  if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
    drawFootprints(canvasdict.highlight, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom, true);
  }
  if (highlightedNet !== null) {
    drawNets(canvasdict.highlight, canvasdict.layer, true);
  }
}

function drawHighlights() {
  drawHighlightsOnLayer(allcanvas.front);
  drawHighlightsOnLayer(allcanvas.back);
}

function drawBackground(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.bg);
    clearCanvas(canvasdict.fab);
    clearCanvas(canvasdict.silk);
  }

  drawNets(canvasdict.bg, canvasdict.layer, false);
  drawFootprints(canvasdict.bg, canvasdict.layer,
    canvasdict.transform.s * canvasdict.transform.zoom, false);

  drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);

  var style = getComputedStyle(topmostdiv);
  var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
  var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
  var textColor = style.getPropertyValue('--silkscreen-text-color');
  if (settings.renderSilkscreen) {
    drawBgLayer(
      "silkscreen", canvasdict.silk, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
  edgeColor = style.getPropertyValue('--fabrication-edge-color');
  polygonColor = style.getPropertyValue('--fabrication-polygon-color');
  textColor = style.getPropertyValue('--fabrication-text-color');
  if (settings.renderFabrication) {
    drawBgLayer(
      "fabrication", canvasdict.fab, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
}

function prepareCanvas(canvas, flip, transform) {
  var ctx = canvas.getContext("2d");
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  var fontsize = 1.55;
  ctx.scale(transform.zoom, transform.zoom);
  ctx.translate(transform.panx, transform.pany);
  if (flip) {
    ctx.scale(-1, 1);
  }
  ctx.translate(transform.x, transform.y);
  ctx.rotate(deg2rad(settings.boardRotation));
  ctx.scale(transform.s, transform.s);
}

function prepareLayer(canvasdict) {
  var flip = (canvasdict.layer == "B");
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    prepareCanvas(canvasdict[c], flip, canvasdict.transform);
  }
}

function rotateVector(v, angle) {
  angle = deg2rad(angle);
  return [
    v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
    v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
  ];
}

function applyRotation(bbox) {
  var corners = [
    [bbox.minx, bbox.miny],
    [bbox.minx, bbox.maxy],
    [bbox.maxx, bbox.miny],
    [bbox.maxx, bbox.maxy],
  ];
  corners = corners.map((v) => rotateVector(v, settings.boardRotation));
  return {
    minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
    miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
    maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
    maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
  }
}

function recalcLayerScale(layerdict, width, height) {
  var bbox = applyRotation(pcbdata.edges_bbox);
  var scalefactor = 0.98 * Math.min(
    width / (bbox.maxx - bbox.minx),
    height / (bbox.maxy - bbox.miny)
  );
  if (scalefactor < 0.1) {
    scalefactor = 1;
  }
  layerdict.transform.s = scalefactor;
  var flip = (layerdict.layer == "B");
  if (flip) {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
  } else {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
  }
  layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    canvas = layerdict[c];
    canvas.width = width;
    canvas.height = height;
    canvas.style.width = (width / devicePixelRatio) + "px";
    canvas.style.height = (height / devicePixelRatio) + "px";
  }
}

function redrawCanvas(layerdict) {
  prepareLayer(layerdict);
  drawBackground(layerdict);
  drawHighlightsOnLayer(layerdict);
}

function resizeCanvas(layerdict) {
  var canvasdivid = {
    "F": "frontcanvas",
    "B": "backcanvas"
  } [layerdict.layer];
  var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
  var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
  recalcLayerScale(layerdict, width, height);
  redrawCanvas(layerdict);
}

function resizeAll() {
  resizeCanvas(allcanvas.front);
  resizeCanvas(allcanvas.back);
}

function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
  var A = x - x1;
  var B = y - y1;
  var C = x2 - x1;
  var D = y2 - y1;

  var dot = A * C + B * D;
  var len_sq = C * C + D * D;
  var dx, dy;
  if (len_sq == 0) {
    // start and end of the segment coincide
    dx = x - x1;
    dy = y - y1;
  } else {
    var param = dot / len_sq;
    var xx, yy;
    if (param < 0) {
      xx = x1;
      yy = y1;
    } else if (param > 1) {
      xx = x2;
      yy = y2;
    } else {
      xx = x1 + param * C;
      yy = y1 + param * D;
    }
    dx = x - xx;
    dy = y - yy;
  }
  return dx * dx + dy * dy <= d * d;
}

function modulo(n, mod) {
  return ((n % mod) + mod) % mod;
}

function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
  var dx = x - xc;
  var dy = y - yc;
  var r_sq = dx * dx + dy * dy;
  var rmin = Math.max(0, radius - d);
  var rmax = radius + d;

  if (r_sq < rmin * rmin || r_sq > rmax * rmax)
    return false;

  var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
  var dx1 = xc + radius * Math.cos(angle1) - x;
  var dy1 = yc + radius * Math.sin(angle1) - y;
  if (dx1 * dx1 + dy1 * dy1 <= d * d)
    return true;

  var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
  var dx2 = xc + radius * Math.cos(angle2) - x;
  var dy2 = yc + radius * Math.sin(angle2) - y;
  if (dx2 * dx2 + dy2 * dy2 <= d * d)
    return true;

  var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
  if (angle1 > angle2)
    return (angle >= angle2 || angle <= angle1);
  else
    return (angle >= angle1 && angle <= angle2);
}

function pointWithinPad(x, y, pad) {
  var v = [x - pad.pos[0], y - pad.pos[1]];
  v = rotateVector(v, -pad.angle);
  if (pad.offset) {
    v[0] -= pad.offset[0];
    v[1] -= pad.offset[1];
  }
  return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
}

function netHitScan(layer, x, y) {
  // Check track segments
  if (settings.renderTracks && pcbdata.tracks) {
    for (var track of pcbdata.tracks[layer]) {
      if ('radius' in track) {
        if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
          return track.net;
        }
      } else {
        if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
          return track.net;
        }
      }
    }
  }
  // Check pads
  if (settings.renderPads) {
    for (var footprint of pcbdata.footprints) {
      for (var pad of footprint.pads) {
        if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
          return pad.net;
        }
      }
    }
  }
  return null;
}

function pointWithinFootprintBbox(x, y, bbox) {
  var v = [x - bbox.pos[0], y - bbox.pos[1]];
  v = rotateVector(v, bbox.angle);
  return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
    bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
}

function bboxHitScan(layer, x, y) {
  var result = [];
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var footprint = pcbdata.footprints[i];
    if (footprint.layer == layer) {
      if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
        result.push(i);
      }
    }
  }
  return result;
}

function handlePointerDown(e, layerdict) {
  if (e.button != 0 && e.button != 1) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  layerdict.pointerStates[e.pointerId] = {
    distanceTravelled: 0,
    lastX: e.offsetX,
    lastY: e.offsetY,
    downTime: Date.now(),
  };
}

function handleMouseClick(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var x = e.offsetX;
  var y = e.offsetY;
  var t = layerdict.transform;
  if (layerdict.layer == "B") {
    x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
  } else {
    x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
  }
  y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
  var v = rotateVector([x, y], -settings.boardRotation);
  if ("nets" in pcbdata) {
    var net = netHitScan(layerdict.layer, ...v);
    if (net !== highlightedNet) {
      netClicked(net);
    }
  }
  if (highlightedNet === null) {
    var footprints = bboxHitScan(layerdict.layer, ...v);
    if (footprints.length > 0) {
      footprintsClicked(footprints);
    }
  }
}

function handlePointerLeave(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();

  if (!settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }

  delete layerdict.pointerStates[e.pointerId];
}

function resetTransform(layerdict) {
  layerdict.transform.panx = 0;
  layerdict.transform.pany = 0;
  layerdict.transform.zoom = 1;
  redrawCanvas(layerdict);
}

function handlePointerUp(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  e.preventDefault();
  e.stopPropagation();

  if (e.button == 2) {
    // Reset pan and zoom on right click.
    resetTransform(layerdict);
    layerdict.anotherPointerTapped = false;
    return;
  }

  // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
  var ptr = layerdict.pointerStates[e.pointerId];
  ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);

  if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
    if (Object.keys(layerdict.pointerStates).length == 1) {
      if (layerdict.anotherPointerTapped) {
        // This is the second pointer coming off of a two-finger tap
        resetTransform(layerdict);
      } else {
        // This is just a regular tap
        handleMouseClick(e, layerdict);
      }
      layerdict.anotherPointerTapped = false;
    } else {
      // This is the first finger coming off of what could become a two-finger tap
      layerdict.anotherPointerTapped = true;
    }
  } else {
    if (!settings.redrawOnDrag) {
      redrawCanvas(layerdict);
    }
    layerdict.anotherPointerTapped = false;
  }

  delete layerdict.pointerStates[e.pointerId];
}

function handlePointerMove(e, layerdict) {
  if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var thisPtr = layerdict.pointerStates[e.pointerId];

  var dx = e.offsetX - thisPtr.lastX;
  var dy = e.offsetY - thisPtr.lastY;

  // If this number is low on pointer up, we count the action as a click
  thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);

  if (Object.keys(layerdict.pointerStates).length == 1) {
    // This is a simple drag
    layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
    layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
  } else if (Object.keys(layerdict.pointerStates).length == 2) {
    var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];

    var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
    var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));

    var scaleFactor = newDist / oldDist;

    if (scaleFactor != NaN) {
      layerdict.transform.zoom *= scaleFactor;

      var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
      layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
      layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
    }
  }

  thisPtr.lastX = e.offsetX;
  thisPtr.lastY = e.offsetY;

  if (settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }
}

function handleMouseWheel(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();
  var t = layerdict.transform;
  var wheeldelta = e.deltaY;
  if (e.deltaMode == 1) {
    // FF only, scroll by lines
    wheeldelta *= 30;
  } else if (e.deltaMode == 2) {
    wheeldelta *= 300;
  }
  var m = Math.pow(1.1, -wheeldelta / 40);
  // Limit amount of zoom per tick.
  if (m > 2) {
    m = 2;
  } else if (m < 0.5) {
    m = 0.5;
  }
  t.zoom *= m;
  var zoomd = (1 - m) / t.zoom;
  t.panx += devicePixelRatio * e.offsetX * zoomd;
  t.pany += devicePixelRatio * e.offsetY * zoomd;
  redrawCanvas(layerdict);
}

function addMouseHandlers(div, layerdict) {
  div.addEventListener("pointerdown", function(e) {
    handlePointerDown(e, layerdict);
  });
  div.addEventListener("pointermove", function(e) {
    handlePointerMove(e, layerdict);
  });
  div.addEventListener("pointerup", function(e) {
    handlePointerUp(e, layerdict);
  });
  var pointerleave = function(e) {
    handlePointerLeave(e, layerdict);
  }
  div.addEventListener("pointercancel", pointerleave);
  div.addEventListener("pointerleave", pointerleave);
  div.addEventListener("pointerout", pointerleave);

  div.onwheel = function(e) {
    handleMouseWheel(e, layerdict);
  }
  for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
    element.addEventListener("contextmenu", function(e) {
      e.preventDefault();
    }, false);
  }
}

function setRedrawOnDrag(value) {
  settings.redrawOnDrag = value;
  writeStorage("redrawOnDrag", value);
}

function setBoardRotation(value) {
  settings.boardRotation = value * 5;
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  resizeAll();
}

function initRender() {
  allcanvas = {
    front: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("F_bg"),
      fab: document.getElementById("F_fab"),
      silk: document.getElementById("F_slk"),
      highlight: document.getElementById("F_hl"),
      layer: "F",
    },
    back: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("B_bg"),
      fab: document.getElementById("B_fab"),
      silk: document.getElementById("B_slk"),
      highlight: document.getElementById("B_hl"),
      layer: "B",
    }
  };
  addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
  addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/*
 * Table reordering via Drag'n'Drop
 * Inspired by: https://htmldom.dev/drag-and-drop-table-column
 */

function setBomHandlers() {

  const bom = document.getElementById('bomtable');

  let dragName;
  let placeHolderElements;
  let draggingElement;
  let forcePopulation;
  let xOffset;
  let yOffset;
  let wasDragged;

  const mouseUpHandler = function(e) {
    // Delete dragging element
    draggingElement.remove();

    // Make BOM selectable again
    bom.style.removeProperty("userSelect");

    // Remove listeners
    document.removeEventListener('mousemove', mouseMoveHandler);
    document.removeEventListener('mouseup', mouseUpHandler);

    if (wasDragged) {
      // Redraw whole BOM
      populateBomTable();
    }
  }

  const mouseMoveHandler = function(e) {
    // Notice the dragging
    wasDragged = true;

    // Make the dragged element visible
    draggingElement.style.removeProperty("display");

    // Set elements position to mouse position
    draggingElement.style.left = `${e.screenX - xOffset}px`;
    draggingElement.style.top = `${e.screenY - yOffset}px`;

    // Forced redrawing of BOM table
    if (forcePopulation) {
      forcePopulation = false;
      // Copy array
      phe = Array.from(placeHolderElements);
      // populate BOM table again
      populateBomHeader(dragName, phe);
      populateBomBody(dragName, phe);
    }

    // Set up array of hidden columns
    var hiddenColumns = Array.from(settings.hiddenColumns);
    // In the ungrouped mode, quantity don't exist
    if (settings.bommode === "ungrouped")
      hiddenColumns.push("Quantity");
    // If no checkbox fields can be found, we consider them hidden
    if (settings.checkboxes.length == 0)
      hiddenColumns.push("checkboxes");

    // Get table headers and group them into checkboxes, extrafields and normal headers
    const bh = document.getElementById("bomhead");
    headers = Array.from(bh.querySelectorAll("th"))
    headers.shift() // numCol is not part of the columnOrder
    headerGroups = []
    lastCompoundClass = null;
    for (i = 0; i < settings.columnOrder.length; i++) {
      cElem = settings.columnOrder[i];
      if (hiddenColumns.includes(cElem)) {
        // Hidden columns appear as a dummy element
        headerGroups.push([]);
        continue;
      }
      elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
      if (elem.classList.contains("bom-checkbox")) {
        if (lastCompoundClass === "bom-checkbox") {
          cbGroup = headerGroups.pop();
          cbGroup.push(elem);
          headerGroups.push(cbGroup);
        } else {
          lastCompoundClass = "bom-checkbox";
          headerGroups.push([elem])
        }
      } else {
        headerGroups.push([elem])
      }
    }

    // Copy settings.columnOrder
    var columns = Array.from(settings.columnOrder)

    // Set up array with indices of hidden columns
    var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
    var dragIndex = columns.indexOf(dragName);
    var swapIndex = dragIndex;
    var swapDone = false;

    // Check if the current dragged element is swapable with the left or right element
    if (dragIndex > 0) {
      // Get left headers boundingbox
      swapIndex = dragIndex - 1;
      while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
        swapIndex--;
      if (!hiddenIndices.includes(swapIndex)) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }
    if ((!swapDone) && dragIndex < headerGroups.length - 1) {
      // Get right headers boundingbox
      swapIndex = dragIndex + 1;
      while (hiddenIndices.includes(swapIndex))
        swapIndex++;
      if (swapIndex < headerGroups.length) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }

    // Write back change to storage
    if (swapDone) {
      settings.columnOrder = columns
      writeStorage("columnOrder", JSON.stringify(columns));
    }

  }

  const mouseDownHandler = function(e) {
    var target = e.target;
    if (target.tagName.toLowerCase() != "td")
      target = target.parentElement;

    // Used to check if a dragging has ever happened
    wasDragged = false;

    // Create new element which will be displayed as the dragged column
    draggingElement = document.createElement("div")
    draggingElement.classList.add("dragging");
    draggingElement.style.display = "none";
    draggingElement.style.position = "absolute";
    draggingElement.style.overflow = "hidden";

    // Get bomhead and bombody elements
    const bh = document.getElementById("bomhead");
    const bb = document.getElementById("bombody");

    // Get all compound headers for the current column
    var compoundHeaders;
    if (target.classList.contains("bom-checkbox")) {
      compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
    } else {
      compoundHeaders = [target];
    }

    // Create new table which will display the column
    var newTable = document.createElement("table");
    newTable.classList.add("bom");
    newTable.style.background = "white";
    draggingElement.append(newTable);

    // Create new header element
    var newHeader = document.createElement("thead");
    newTable.append(newHeader);

    // Set up array for storing all placeholder elements
    placeHolderElements = [];

    // Add all compound headers to the new thead element and placeholders
    compoundHeaders.forEach(function(h) {
      clone = cloneElementWithDimensions(h);
      newHeader.append(clone);
      placeHolderElements.push(clone);
    });

    // Create new body element
    var newBody = document.createElement("tbody");
    newTable.append(newBody);

    // Get indices for compound headers
    var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));

    // For each row in the BOM body...
    var rows = bb.querySelectorAll("tr");
    rows.forEach(function(row) {
      // ..get the cells for the compound column
      const tds = row.querySelectorAll("td");
      var copytds = idxs.map(i => tds[i]);
      // Add them to the new element and the placeholders
      var newRow = document.createElement("tr");
      copytds.forEach(function(td) {
        clone = cloneElementWithDimensions(td);
        newRow.append(clone);
        placeHolderElements.push(clone);
      });
      newBody.append(newRow);
    });

    // Compute width for compound header
    var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
    draggingElement.style.width = `${width}px`;

    // Insert the new dragging element and disable selection on BOM
    bom.insertBefore(draggingElement, null);
    bom.style.userSelect = "none";

    // Determine the mouse position offset
    xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
    yOffset = e.screenY - compoundHeaders[0].offsetTop;

    // Get name for the column in settings.columnOrder
    dragName = getColumnOrderName(target);

    // Change text and class for placeholder elements
    placeHolderElements = placeHolderElements.map(function(e) {
      newElem = cloneElementWithDimensions(e);
      newElem.textContent = "";
      newElem.classList.add("placeholder");
      return newElem;
    });

    // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
    forcePopulation = true;

    // Add listeners for move and up on mouse
    document.addEventListener('mousemove', mouseMoveHandler);
    document.addEventListener('mouseup', mouseUpHandler);
  }

  // In netlist mode, there is nothing to reorder
  if (settings.bommode === "netlist")
    return;

  // Add mouseDownHandler to every column except the numCol
  bom.querySelectorAll("th")
    .forEach(function(head) {
      if (!head.classList.contains("numCol")) {
        head.onmousedown = mouseDownHandler;
      }
    });

}

function getBoundingClientRectFromMultiple(elements) {
  var elems = Array.from(elements);

  if (elems.length == 0)
    return null;

  var box = elems.shift()
    .getBoundingClientRect();

  elems.forEach(function(elem) {
    var elembox = elem.getBoundingClientRect();
    box.left = Math.min(elembox.left, box.left);
    box.top = Math.min(elembox.top, box.top);
    box.width += elembox.width;
    box.height = Math.max(elembox.height, box.height);
  });

  return box;
}

function cloneElementWithDimensions(elem) {
  var newElem = elem.cloneNode(true);
  newElem.style.height = window.getComputedStyle(elem).height;
  newElem.style.width = window.getComputedStyle(elem).width;
  return newElem;
}

function getBomTableHeaderIndex(elem) {
  const bh = document.getElementById('bomhead');
  const ths = Array.from(bh.querySelectorAll("th"));
  return ths.indexOf(elem);
}

function getColumnOrderName(elem) {
  var cname = elem.getAttribute("col_name");
  if (cname === "bom-checkbox")
    return "checkboxes";
  else
    return cname;
}

function resizableGrid(tablehead) {
  var cols = tablehead.firstElementChild.children;
  var rowWidth = tablehead.offsetWidth;

  for (var i = 1; i < cols.length; i++) {
    if (cols[i].classList.contains("bom-checkbox"))
      continue;
    cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
  }

  for (var i = 1; i < cols.length - 1; i++) {
    var div = document.createElement('div');
    div.className = "column-width-handle";
    cols[i].appendChild(div);
    setListeners(div);
  }

  function setListeners(div) {
    var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;

    div.addEventListener('mousedown', function(e) {
      e.preventDefault();
      e.stopPropagation();

      curCol = e.target.parentElement;
      nxtCol = curCol.nextElementSibling;
      startX = e.pageX;

      var padding = paddingDiff(curCol);

      rowWidth = curCol.parentElement.offsetWidth;
      curColWidth = curCol.clientWidth - padding;
      nxtColWidth = nxtCol.clientWidth - padding;
    });

    document.addEventListener('mousemove', function(e) {
      if (startX) {
        var diffX = e.pageX - startX;
        diffX = -Math.min(-diffX, curColWidth - 20);
        diffX = Math.min(diffX, nxtColWidth - 20);

        curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
        nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
        console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
      }
    });

    document.addEventListener('mouseup', function(e) {
      curCol = undefined;
      nxtCol = undefined;
      startX = undefined;
      nxtColWidth = undefined;
      curColWidth = undefined
    });
  }

  function paddingDiff(col) {

    if (getStyleVal(col, 'box-sizing') == 'border-box') {
      return 0;
    }

    var padLeft = getStyleVal(col, 'padding-left');
    var padRight = getStyleVal(col, 'padding-right');
    return (parseInt(padLeft) + parseInt(padRight));

  }

  function getStyleVal(elm, css) {
    return (window.getComputedStyle(elm, null).getPropertyValue(css))
  }
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/* DOM manipulation and misc code */

var bomsplit;
var canvassplit;
var initDone = false;
var bomSortFunction = null;
var currentSortColumn = null;
var currentSortOrder = null;
var currentHighlightedRowId;
var highlightHandlers = [];
var footprintIndexToHandler = {};
var netsToHandler = {};
var markedFootprints = new Set();
var highlightedFootprints = [];
var highlightedNet = null;
var lastClicked;

function dbg(html) {
  dbgdiv.innerHTML = html;
}

function redrawIfInitDone() {
  if (initDone) {
    redrawCanvas(allcanvas.front);
    redrawCanvas(allcanvas.back);
  }
}

function padsVisible(value) {
  writeStorage("padsVisible", value);
  settings.renderPads = value;
  redrawIfInitDone();
}

function referencesVisible(value) {
  writeStorage("referencesVisible", value);
  settings.renderReferences = value;
  redrawIfInitDone();
}

function valuesVisible(value) {
  writeStorage("valuesVisible", value);
  settings.renderValues = value;
  redrawIfInitDone();
}

function tracksVisible(value) {
  writeStorage("tracksVisible", value);
  settings.renderTracks = value;
  redrawIfInitDone();
}

function zonesVisible(value) {
  writeStorage("zonesVisible", value);
  settings.renderZones = value;
  redrawIfInitDone();
}

function dnpOutline(value) {
  writeStorage("dnpOutline", value);
  settings.renderDnpOutline = value;
  redrawIfInitDone();
}

function setDarkMode(value) {
  if (value) {
    topmostdiv.classList.add("dark");
  } else {
    topmostdiv.classList.remove("dark");
  }
  writeStorage("darkmode", value);
  settings.darkMode = value;
  redrawIfInitDone();
}

function setShowBOMColumn(field, value) {
  if (field === "references") {
    var rl = document.getElementById("reflookup");
    rl.disabled = !value;
    if (!value) {
      rl.value = "";
      updateRefLookup("");
    }
  }

  var n = settings.hiddenColumns.indexOf(field);
  if (value) {
    if (n != -1) {
      settings.hiddenColumns.splice(n, 1);
    }
  } else {
    if (n == -1) {
      settings.hiddenColumns.push(field);
    }
  }

  writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));

  if (initDone) {
    populateBomTable();
  }

  redrawIfInitDone();
}


function setFullscreen(value) {
  if (value) {
    document.documentElement.requestFullscreen();
  } else {
    document.exitFullscreen();
  }
}

function fabricationVisible(value) {
  writeStorage("fabricationVisible", value);
  settings.renderFabrication = value;
  redrawIfInitDone();
}

function silkscreenVisible(value) {
  writeStorage("silkscreenVisible", value);
  settings.renderSilkscreen = value;
  redrawIfInitDone();
}

function setHighlightPin1(value) {
  writeStorage("highlightpin1", value);
  settings.highlightpin1 = value;
  redrawIfInitDone();
}

function getStoredCheckboxRefs(checkbox) {
  function convert(ref) {
    var intref = parseInt(ref);
    if (isNaN(intref)) {
      for (var i = 0; i < pcbdata.footprints.length; i++) {
        if (pcbdata.footprints[i].ref == ref) {
          return i;
        }
      }
      return -1;
    } else {
      return intref;
    }
  }
  if (!(checkbox in settings.checkboxStoredRefs)) {
    var val = readStorage("checkbox_" + checkbox);
    settings.checkboxStoredRefs[checkbox] = val ? val : "";
  }
  if (!settings.checkboxStoredRefs[checkbox]) {
    return new Set();
  } else {
    return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
  }
}

function getCheckboxState(checkbox, references) {
  var storedRefsSet = getStoredCheckboxRefs(checkbox);
  var currentRefsSet = new Set(references.map(r => r[1]));
  // Get difference of current - stored
  var difference = new Set(currentRefsSet);
  for (ref of storedRefsSet) {
    difference.delete(ref);
  }
  if (difference.size == 0) {
    // All the current refs are stored
    return "checked";
  } else if (difference.size == currentRefsSet.size) {
    // None of the current refs are stored
    return "unchecked";
  } else {
    // Some of the refs are stored
    return "indeterminate";
  }
}

function setBomCheckboxState(checkbox, element, references) {
  var state = getCheckboxState(checkbox, references);
  element.checked = (state == "checked");
  element.indeterminate = (state == "indeterminate");
}

function createCheckboxChangeHandler(checkbox, references, row) {
  return function () {
    refsSet = getStoredCheckboxRefs(checkbox);
    var markWhenChecked = settings.markWhenChecked == checkbox;
    eventArgs = {
      checkbox: checkbox,
      refs: references,
    }
    if (this.checked) {
      // checkbox ticked
      for (var ref of references) {
        refsSet.add(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.add("checked");
        for (var ref of references) {
          markedFootprints.add(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'checked';
    } else {
      // checkbox unticked
      for (var ref of references) {
        refsSet.delete(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.remove("checked");
        for (var ref of references) {
          markedFootprints.delete(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'unchecked';
    }
    settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
    updateCheckboxStats(checkbox);
    EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
  }
}

function clearHighlightedFootprints() {
  if (currentHighlightedRowId) {
    document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    currentHighlightedRowId = null;
    highlightedFootprints = [];
    highlightedNet = null;
  }
}

function createRowHighlightHandler(rowid, refs, net) {
  return function () {
    if (currentHighlightedRowId) {
      if (currentHighlightedRowId == rowid) {
        return;
      }
      document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    }
    document.getElementById(rowid).classList.add("highlighted");
    currentHighlightedRowId = rowid;
    highlightedFootprints = refs ? refs.map(r => r[1]) : [];
    highlightedNet = net;
    drawHighlights();
    EventHandler.emitEvent(
      IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
      rowid: rowid,
      refs: refs,
      net: net
    });
  }
}

function entryMatches(entry) {
  if (settings.bommode == "netlist") {
    // entry is just a net name
    return entry.toLowerCase().indexOf(filter) >= 0;
  }
  // check refs
  if (!settings.hiddenColumns.includes("references")) {
    for (var ref of entry) {
      if (ref[0].toLowerCase().indexOf(filter) >= 0) {
        return true;
      }
    }
  }
  // check fields
  for (var i in config.fields) {
    var f = config.fields[i];
    if (!settings.hiddenColumns.includes(f)) {
      for (var ref of entry) {
        if (pcbdata.bom.fields[ref[1]][i].toLowerCase().indexOf(filter) >= 0) {
          return true;
        }
      }
    }
  }
  return false;
}

function findRefInEntry(entry) {
  return entry.filter(r => r[0].toLowerCase() == reflookup);
}

function highlightFilter(s) {
  if (!filter) {
    return s;
  }
  var parts = s.toLowerCase().split(filter);
  if (parts.length == 1) {
    return s;
  }
  var r = "";
  var pos = 0;
  for (var i in parts) {
    if (i > 0) {
      r += '<mark class="highlight">' +
        s.substring(pos, pos + filter.length) +
        '</mark>';
      pos += filter.length;
    }
    r += s.substring(pos, pos + parts[i].length);
    pos += parts[i].length;
  }
  return r;
}

function checkboxSetUnsetAllHandler(checkboxname) {
  return function () {
    var checkboxnum = 0;
    while (checkboxnum < settings.checkboxes.length &&
      settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
      checkboxnum++;
    }
    if (checkboxnum >= settings.checkboxes.length) {
      return;
    }
    var allset = true;
    var checkbox;
    var row;
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      if (!checkbox.checked || checkbox.indeterminate) {
        allset = false;
        break;
      }
    }
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      checkbox.checked = !allset;
      checkbox.indeterminate = false;
      checkbox.onchange();
    }
  }
}

function createColumnHeader(name, cls, comparator, is_checkbox = false) {
  var th = document.createElement("TH");
  th.innerHTML = name;
  th.classList.add(cls);
  if (is_checkbox)
    th.setAttribute("col_name", "bom-checkbox");
  else
    th.setAttribute("col_name", name);
  var span = document.createElement("SPAN");
  span.classList.add("sortmark");
  span.classList.add("none");
  th.appendChild(span);
  var spacer = document.createElement("div");
  spacer.className = "column-spacer";
  th.appendChild(spacer);
  spacer.onclick = function () {
    if (currentSortColumn && th !== currentSortColumn) {
      // Currently sorted by another column
      currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
      currentSortColumn.childNodes[1].classList.add("none");
      currentSortColumn = null;
      currentSortOrder = null;
    }
    if (currentSortColumn && th === currentSortColumn) {
      // Already sorted by this column
      if (currentSortOrder == "asc") {
        // Sort by this column, descending order
        bomSortFunction = function (a, b) {
          return -comparator(a, b);
        }
        currentSortColumn.childNodes[1].classList.remove("asc");
        currentSortColumn.childNodes[1].classList.add("desc");
        currentSortOrder = "desc";
      } else {
        // Unsort
        bomSortFunction = null;
        currentSortColumn.childNodes[1].classList.remove("desc");
        currentSortColumn.childNodes[1].classList.add("none");
        currentSortColumn = null;
        currentSortOrder = null;
      }
    } else {
      // Sort by this column, ascending order
      bomSortFunction = comparator;
      currentSortColumn = th;
      currentSortColumn.childNodes[1].classList.remove("none");
      currentSortColumn.childNodes[1].classList.add("asc");
      currentSortOrder = "asc";
    }
    populateBomBody();
  }
  if (is_checkbox) {
    spacer.onclick = fancyDblClickHandler(
      spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
  }
  return th;
}

function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
  while (bomhead.firstChild) {
    bomhead.removeChild(bomhead.firstChild);
  }
  var tr = document.createElement("TR");
  var th = document.createElement("TH");
  th.classList.add("numCol");

  var vismenu = document.createElement("div");
  vismenu.id = "vismenu";
  vismenu.classList.add("menu");

  var visbutton = document.createElement("div");
  visbutton.classList.add("visbtn");
  visbutton.classList.add("hideonprint");

  var viscontent = document.createElement("div");
  viscontent.classList.add("menu-content");
  viscontent.id = "vismenu-content";

  settings.columnOrder.forEach(column => {
    if (typeof column !== "string")
      return;

    // Skip empty columns
    if (column === "checkboxes" && settings.checkboxes.length == 0)
      return;
    else if (column === "Quantity" && settings.bommode == "ungrouped")
      return;

    var label = document.createElement("label");
    label.classList.add("menu-label");

    var input = document.createElement("input");
    input.classList.add("visibility_checkbox");
    input.type = "checkbox";
    input.onchange = function (e) {
      setShowBOMColumn(column, e.target.checked)
    };
    input.checked = !(settings.hiddenColumns.includes(column));

    label.appendChild(input);
    if (column.length > 0)
      label.append(column[0].toUpperCase() + column.slice(1));

    viscontent.appendChild(label);
  });

  viscontent.childNodes[0].classList.add("menu-label-top");

  vismenu.appendChild(visbutton);
  if (settings.bommode != "netlist") {
    vismenu.appendChild(viscontent);
    th.appendChild(vismenu);
  }
  tr.appendChild(th);

  var checkboxCompareClosure = function (checkbox) {
    return (a, b) => {
      var stateA = getCheckboxState(checkbox, a);
      var stateB = getCheckboxState(checkbox, b);
      if (stateA > stateB) return -1;
      if (stateA < stateB) return 1;
      return 0;
    }
  }
  var stringFieldCompareClosure = function (fieldIndex) {
    return (a, b) => {
      var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
      var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
      if (fa != fb) return fa > fb ? 1 : -1;
      else return 0;
    }
  }
  var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
  var compareRefs = (a, b) => {
    var ra = referenceRegex.exec(a);
    var rb = referenceRegex.exec(b);
    if (ra === null || rb === null) {
      if (a != b) return a > b ? 1 : -1;
      return 0;
    } else {
      if (ra.groups.prefix != rb.groups.prefix) {
        return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
      }
      if (ra.groups.number != rb.groups.number) {
        return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
      }
      return 0;
    }
  }
  if (settings.bommode == "netlist") {
    th = createColumnHeader("Net name", "bom-netname", (a, b) => {
      if (a > b) return -1;
      if (a < b) return 1;
      return 0;
    });
    tr.appendChild(th);
  } else {
    // Filter hidden columns
    var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
    var valueIndex = config.fields.indexOf("Value");
    var footprintIndex = config.fields.indexOf("Footprint");
    columns.forEach((column) => {
      if (column === placeHolderColumn) {
        var n = 1;
        if (column === "checkboxes")
          n = settings.checkboxes.length;
        for (i = 0; i < n; i++) {
          td = placeHolderElements.shift();
          tr.appendChild(td);
        }
        return;
      } else if (column === "checkboxes") {
        for (var checkbox of settings.checkboxes) {
          th = createColumnHeader(
            checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
          tr.appendChild(th);
        }
      } else if (column === "References") {
        tr.appendChild(createColumnHeader("References", "references", (a, b) => {
          var i = 0;
          while (i < a.length && i < b.length) {
            if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
            i++;
          }
          return a.length - b.length;
        }));
      } else if (column === "Value") {
        tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
          var ra = a[0][1], rb = b[0][1];
          return valueCompare(
            pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
            pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
        }));
        return;
      } else if (column === "Footprint") {
        tr.appendChild(createColumnHeader(
          "Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
      } else if (column === "Quantity" && settings.bommode == "grouped") {
        tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
          return a.length - b.length;
        }));
      } else {
        // Other fields
        var i = config.fields.indexOf(column);
        if (i < 0)
          return;
        tr.appendChild(createColumnHeader(
          column, `field${i + 1}`, stringFieldCompareClosure(i)));
      }
    });
  }
  bomhead.appendChild(tr);
}

function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
  while (bom.firstChild) {
    bom.removeChild(bom.firstChild);
  }
  highlightHandlers = [];
  footprintIndexToHandler = {};
  netsToHandler = {};
  currentHighlightedRowId = null;
  var first = true;
  if (settings.bommode == "netlist") {
    bomtable = pcbdata.nets.slice();
  } else {
    switch (settings.canvaslayout) {
      case 'F':
        bomtable = pcbdata.bom.F.slice();
        break;
      case 'FB':
        bomtable = pcbdata.bom.both.slice();
        break;
      case 'B':
        bomtable = pcbdata.bom.B.slice();
        break;
    }
    if (settings.bommode == "ungrouped") {
      // expand bom table
      expandedTable = []
      for (var bomentry of bomtable) {
        for (var ref of bomentry) {
          expandedTable.push([ref]);
        }
      }
      bomtable = expandedTable;
    }
  }
  if (bomSortFunction) {
    bomtable = bomtable.sort(bomSortFunction);
  }
  for (var i in bomtable) {
    var bomentry = bomtable[i];
    if (filter && !entryMatches(bomentry)) {
      continue;
    }
    var references = null;
    var netname = null;
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    var rownum = +i + 1;
    tr.id = "bomrow" + rownum;
    td.textContent = rownum;
    tr.appendChild(td);
    if (settings.bommode == "netlist") {
      netname = bomentry;
      td = document.createElement("TD");
      td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
      tr.appendChild(td);
    } else {
      if (reflookup) {
        references = findRefInEntry(bomentry);
        if (references.length == 0) {
          continue;
        }
      } else {
        references = bomentry;
      }
      // Filter hidden columns
      var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
      columns.forEach((column) => {
        if (column === placeholderColumn) {
          var n = 1;
          if (column === "checkboxes")
            n = settings.checkboxes.length;
          for (i = 0; i < n; i++) {
            td = placeHolderElements.shift();
            tr.appendChild(td);
          }
          return;
        } else if (column === "checkboxes") {
          for (var checkbox of settings.checkboxes) {
            if (checkbox) {
              td = document.createElement("TD");
              var input = document.createElement("input");
              input.type = "checkbox";
              input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
              setBomCheckboxState(checkbox, input, references);
              if (input.checked && settings.markWhenChecked == checkbox) {
                tr.classList.add("checked");
              }
              td.appendChild(input);
              tr.appendChild(td);
            }
          }
        } else if (column === "References") {
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
          tr.appendChild(td);
        } else if (column === "Quantity" && settings.bommode == "grouped") {
          // Quantity
          td = document.createElement("TD");
          td.textContent = references.length;
          tr.appendChild(td);
        } else {
          // All the other fields
          var field_index = config.fields.indexOf(column)
          if (field_index < 0)
            return;
          var valueSet = new Set();
          references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(Array.from(valueSet).join(", "));
          tr.appendChild(td);
        }
      });
    }
    bom.appendChild(tr);
    var handler = createRowHighlightHandler(tr.id, references, netname);
    tr.onmousemove = handler;
    highlightHandlers.push({
      id: tr.id,
      handler: handler,
    });
    if (references !== null) {
      for (var refIndex of references.map(r => r[1])) {
        footprintIndexToHandler[refIndex] = handler;
      }
    }
    if (netname !== null) {
      netsToHandler[netname] = handler;
    }
    if ((filter || reflookup) && first) {
      handler();
      first = false;
    }
  }
  EventHandler.emitEvent(
    IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
    filter: filter,
    reflookup: reflookup,
    checkboxes: settings.checkboxes,
    bommode: settings.bommode,
  });
}

function highlightPreviousRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[highlightHandlers.length - 1].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[0].id == currentHighlightedRowId) {
      highlightHandlers[highlightHandlers.length - 1].handler();
    } else {
      for (var i = 0; i < highlightHandlers.length - 1; i++) {
        if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function highlightNextRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[0].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
      highlightHandlers[0].handler();
    } else {
      for (var i = 1; i < highlightHandlers.length; i++) {
        if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function populateBomTable() {
  populateBomHeader();
  populateBomBody();
  setBomHandlers();
  resizableGrid(bomhead);
}

function footprintsClicked(footprintIndexes) {
  var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
  for (var i = 1; i <= footprintIndexes.length; i++) {
    var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
    if (refIndex in footprintIndexToHandler) {
      lastClicked = refIndex;
      footprintIndexToHandler[refIndex]();
      smoothScrollToRow(currentHighlightedRowId);
      break;
    }
  }
}

function netClicked(net) {
  if (net in netsToHandler) {
    netsToHandler[net]();
    smoothScrollToRow(currentHighlightedRowId);
  } else {
    clearHighlightedFootprints();
    highlightedNet = net;
    drawHighlights();
  }
}

function updateFilter(input) {
  filter = input.toLowerCase();
  populateBomTable();
}

function updateRefLookup(input) {
  reflookup = input.toLowerCase();
  populateBomTable();
}

function changeCanvasLayout(layout) {
  document.getElementById("fl-btn").classList.remove("depressed");
  document.getElementById("fb-btn").classList.remove("depressed");
  document.getElementById("bl-btn").classList.remove("depressed");
  switch (layout) {
    case 'F':
      document.getElementById("fl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(1);
      }
      break;
    case 'B':
      document.getElementById("bl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(0);
      }
      break;
    default:
      document.getElementById("fb-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.setSizes([50, 50]);
      }
  }
  settings.canvaslayout = layout;
  writeStorage("canvaslayout", layout);
  resizeAll();
  changeBomMode(settings.bommode);
}

function populateMetadata() {
  document.getElementById("title").innerHTML = pcbdata.metadata.title;
  document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
  document.getElementById("company").innerHTML = pcbdata.metadata.company;
  document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
  if (pcbdata.metadata.title != "") {
    document.title = pcbdata.metadata.title + " BOM";
  }
  // Calculate board stats
  var fp_f = 0,
    fp_b = 0,
    pads_f = 0,
    pads_b = 0,
    pads_th = 0;
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    if (pcbdata.bom.skipped.includes(i)) continue;
    var mod = pcbdata.footprints[i];
    if (mod.layer == "F") {
      fp_f++;
    } else {
      fp_b++;
    }
    for (var pad of mod.pads) {
      if (pad.type == "th") {
        pads_th++;
      } else {
        if (pad.layers.includes("F")) {
          pads_f++;
        }
        if (pad.layers.includes("B")) {
          pads_b++;
        }
      }
    }
  }
  document.getElementById("stats-components-front").innerHTML = fp_f;
  document.getElementById("stats-components-back").innerHTML = fp_b;
  document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
  document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
  document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
  document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
  document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
  document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
  document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
  document.getElementById("stats-th-pads").innerHTML = pads_th;
  // Update version string
  document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&nbsp;" +
    /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
}

function changeBomLayout(layout) {
  document.getElementById("bom-btn").classList.remove("depressed");
  document.getElementById("lr-btn").classList.remove("depressed");
  document.getElementById("tb-btn").classList.remove("depressed");
  switch (layout) {
    case 'bom-only':
      document.getElementById("bom-btn").classList.add("depressed");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      document.getElementById("frontcanvas").style.display = "none";
      document.getElementById("backcanvas").style.display = "none";
      document.getElementById("bot").style.height = "";
      break;
    case 'top-bottom':
      document.getElementById("tb-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.remove("split-horizontal");
      document.getElementById("canvasdiv").classList.remove("split-horizontal");
      document.getElementById("frontcanvas").classList.add("split-horizontal");
      document.getElementById("backcanvas").classList.add("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDragEnd: resizeAll,
        direction: "vertical",
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        onDragEnd: resizeAll
      });
      break;
    case 'left-right':
      document.getElementById("lr-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.add("split-horizontal");
      document.getElementById("canvasdiv").classList.add("split-horizontal");
      document.getElementById("frontcanvas").classList.remove("split-horizontal");
      document.getElementById("backcanvas").classList.remove("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDragEnd: resizeAll,
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        direction: "vertical",
        onDragEnd: resizeAll
      });
  }
  settings.bomlayout = layout;
  writeStorage("bomlayout", layout);
  changeCanvasLayout(settings.canvaslayout);
}

function changeBomMode(mode) {
  document.getElementById("bom-grouped-btn").classList.remove("depressed");
  document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
  document.getElementById("bom-netlist-btn").classList.remove("depressed");
  var chkbxs = document.getElementsByClassName("visibility_checkbox");

  switch (mode) {
    case 'grouped':
      document.getElementById("bom-grouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'ungrouped':
      document.getElementById("bom-ungrouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'netlist':
      document.getElementById("bom-netlist-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = true;
      }
  }

  writeStorage("bommode", mode);
  if (mode != settings.bommode) {
    settings.bommode = mode;
    bomSortFunction = null;
    currentSortColumn = null;
    currentSortOrder = null;
    clearHighlightedFootprints();
  }
  populateBomTable();
}

function focusFilterField() {
  focusInputField(document.getElementById("filter"));
}

function focusRefLookupField() {
  focusInputField(document.getElementById("reflookup"));
}

function toggleBomCheckbox(bomrowid, checkboxnum) {
  if (!bomrowid || checkboxnum > settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
  checkbox.checked = !checkbox.checked;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function checkBomCheckbox(bomrowid, checkboxname) {
  var checkboxnum = 0;
  while (checkboxnum < settings.checkboxes.length &&
    settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
    checkboxnum++;
  }
  if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
  checkbox.checked = true;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function setBomCheckboxes(value) {
  writeStorage("bomCheckboxes", value);
  settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
  prepCheckboxes();
  populateMarkWhenCheckedOptions();
  setMarkWhenChecked(settings.markWhenChecked);
}

function setMarkWhenChecked(value) {
  writeStorage("markWhenChecked", value);
  settings.markWhenChecked = value;
  markedFootprints.clear();
  for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
    markedFootprints.add(ref);
  }
  populateBomTable();
  drawHighlights();
}

function prepCheckboxes() {
  var table = document.getElementById("checkbox-stats");
  while (table.childElementCount > 1) {
    table.removeChild(table.lastChild);
  }
  if (settings.checkboxes.length) {
    table.style.display = "";
  } else {
    table.style.display = "none";
  }
  for (var checkbox of settings.checkboxes) {
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    td.innerHTML = checkbox;
    tr.appendChild(td);
    td = document.createElement("TD");
    td.id = "checkbox-stats-" + checkbox;
    var progressbar = document.createElement("div");
    progressbar.classList.add("bar");
    td.appendChild(progressbar);
    var text = document.createElement("div");
    text.classList.add("text");
    td.appendChild(text);
    tr.appendChild(td);
    table.appendChild(tr);
    updateCheckboxStats(checkbox);
  }
}

function populateMarkWhenCheckedOptions() {
  var container = document.getElementById("markWhenCheckedContainer");

  if (settings.checkboxes.length == 0) {
    container.parentElement.style.display = "none";
    return;
  }

  container.innerHTML = '';
  container.parentElement.style.display = "inline-block";

  function createOption(name, displayName) {
    var id = "markWhenChecked-" + name;

    var div = document.createElement("div");
    div.classList.add("radio-container");

    var input = document.createElement("input");
    input.type = "radio";
    input.name = "markWhenChecked";
    input.value = name;
    input.id = id;
    input.onchange = () => setMarkWhenChecked(name);
    div.appendChild(input);

    // Preserve the selected element when the checkboxes change
    if (name == settings.markWhenChecked) {
      input.checked = true;
    }

    var label = document.createElement("label");
    label.innerHTML = displayName;
    label.htmlFor = id;
    div.appendChild(label);

    container.appendChild(div);
  }
  createOption("", "None");
  for (var checkbox of settings.checkboxes) {
    createOption(checkbox, checkbox);
  }
}

function updateCheckboxStats(checkbox) {
  var checked = getStoredCheckboxRefs(checkbox).size;
  var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
  var percent = checked * 100.0 / total;
  var td = document.getElementById("checkbox-stats-" + checkbox);
  td.firstChild.style.width = percent + "%";
  td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
}

document.onkeydown = function (e) {
  switch (e.key) {
    case "n":
      if (document.activeElement.type == "text") {
        return;
      }
      if (currentHighlightedRowId !== null) {
        checkBomCheckbox(currentHighlightedRowId, "placed");
        highlightNextRow();
        e.preventDefault();
      }
      break;
    case "ArrowUp":
      highlightPreviousRow();
      e.preventDefault();
      break;
    case "ArrowDown":
      highlightNextRow();
      e.preventDefault();
      break;
    default:
      break;
  }
  if (e.altKey) {
    switch (e.key) {
      case "f":
        focusFilterField();
        e.preventDefault();
        break;
      case "r":
        focusRefLookupField();
        e.preventDefault();
        break;
      case "z":
        changeBomLayout("bom-only");
        e.preventDefault();
        break;
      case "x":
        changeBomLayout("left-right");
        e.preventDefault();
        break;
      case "c":
        changeBomLayout("top-bottom");
        e.preventDefault();
        break;
      case "v":
        changeCanvasLayout("F");
        e.preventDefault();
        break;
      case "b":
        changeCanvasLayout("FB");
        e.preventDefault();
        break;
      case "n":
        changeCanvasLayout("B");
        e.preventDefault();
        break;
      default:
        break;
    }
    if (e.key >= '1' && e.key <= '9') {
      toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
      e.preventDefault();
    }
  }
}

function hideNetlistButton() {
  document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
  document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
  document.getElementById("bom-netlist-btn").style.display = "none";
}

window.onload = function (e) {
  initUtils();
  initRender();
  initStorage();
  initDefaults();
  cleanGutters();
  populateMetadata();
  dbgdiv = document.getElementById("dbg");
  bom = document.getElementById("bombody");
  bomhead = document.getElementById("bomhead");
  filter = "";
  reflookup = "";
  if (!("nets" in pcbdata)) {
    hideNetlistButton();
  }
  initDone = true;
  setBomCheckboxes(document.getElementById("bomCheckboxes").value);
  // Triggers render
  changeBomLayout(settings.bomlayout);

  // Users may leave fullscreen without touching the checkbox. Uncheck.
  document.addEventListener('fullscreenchange', () => {
    if (!document.fullscreenElement)
      document.getElementById('fullscreenCheckbox').checked = false;
  });
}

window.onresize = resizeAll;
window.matchMedia("print").addListener(resizeAll);

///////////////////////////////////////////////

///////////////////////////////////////////////

///////////////////////////////////////////////
  </script>
</head>

<body>

<div id="topmostdiv" class="topmostdiv">
  <div id="top">
    <div style="float: right; height: 100%;">
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="menubtn"></button>
        <div class="menu-content">
          <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
            <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
            Dark mode
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
            <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
            Full Screen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
            Fab layer
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
            Silkscreen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
            References
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
            Values
          </label>
          <div id="tracksAndZonesCheckboxes">
            <label class="menu-label" style="width: calc(50% - 18px)">
              <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
              Tracks
            </label><!-- This comment eats space! All of it!
            --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
              <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
              Zones
            </label>
          </div>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
            Pads
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
            DNP outlined
          </label>
          <label class="menu-label">
            <input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
            Highlight first pin
          </label>
          <label class="menu-label">
            <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
            Continuous redraw on drag
          </label>
          <label class="menu-label">
            <span>Board rotation</span>
            <span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
            <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Bom checkboxes</div>
            <input id="bomCheckboxes" class="menu-textbox" type=text
                   oninput="setBomCheckboxes(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Mark when checked</div>
            <div id="markWhenCheckedContainer"></div>
          </label>
          <label class="menu-label">
            <span class="shameless-plug">
              <span>Created using</span>
              <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
            </span>
          </label>
        </div>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
                title="Front only">F
        </button>
        <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
                title="Front and Back">FB
        </button>
        <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
                title="Back only">B
        </button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
                title="BOM only"></button>
        <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
                title="BOM left, drawings right"></button>
        <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
                title="BOM top, drawings bot"></button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
                title="Grouped BOM"></button>
        <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
                title="Ungrouped BOM"></button>
        <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
                title="Netlist"></button>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="statsbtn"></button>
        <div class="menu-content">
          <table class="stats">
            <tbody>
              <tr>
                <td width="40%">Board stats</td>
                <td>Front</td>
                <td>Back</td>
                <td>Total</td>
              </tr>
              <tr>
                <td>Components</td>
                <td id="stats-components-front">~</td>
                <td id="stats-components-back">~</td>
                <td id="stats-components-total">~</td>
              </tr>
              <tr>
                <td>Groups</td>
                <td id="stats-groups-front">~</td>
                <td id="stats-groups-back">~</td>
                <td id="stats-groups-total">~</td>
              </tr>
              <tr>
                <td>SMD pads</td>
                <td id="stats-smd-pads-front">~</td>
                <td id="stats-smd-pads-back">~</td>
                <td id="stats-smd-pads-total">~</td>
              </tr>
              <tr>
                <td>TH pads</td>
                <td colspan=3 id="stats-th-pads">~</td>
              </tr>
            </tbody>
          </table>
          <table class="stats">
            <col width="40%"/><col />
            <tbody id="checkbox-stats">
              <tr>
                <td colspan=2 style="border-top: 0">Checkboxes</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="iobtn"></button>
        <div class="menu-content">
          <div class="menu-label menu-label-top">
            <div style="margin-left: 5px;">Save board image</div>
            <div class="flexbox">
              <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
              <span>X</span>
              <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
            </div>
            <label>
              <input id="render-save-transparent" type="checkbox">
              Transparent background
            </label>
            <div class="flexbox">
              <button class="savebtn" onclick="saveImage('F')">Front</button>
              <button class="savebtn" onclick="saveImage('B')">Back</button>
            </div>
          </div>
          <div class="menu-label">
            <span style="margin-left: 5px;">Config and checkbox state</span>
            <div class="flexbox">
              <button class="savebtn" onclick="saveSettings()">Export</button>
              <button class="savebtn" onclick="loadSettings()">Import</button>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id="fileinfodiv" style="overflow: auto;">
      <table class="fileinfo">
        <tbody>
          <tr>
            <td id="title" class="title" style="width: 70%">
              Title
            </td>
            <td id="revision" class="title" style="width: 30%">
              Revision
            </td>
          </tr>
          <tr>
            <td id="company">
              Company
            </td>
            <td id="filedate">
              Date
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
  <div id="bot" class="split" style="height: calc(100% - 80px)">
    <div id="bomdiv" class="split split-horizontal">
      <div style="width: 100%">
        <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
               oninput="updateRefLookup(this.value)">
        <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
               oninput="updateFilter(this.value)">
        <div class="button-container hideonprint" style="float: left; margin: 0;">
          <button id="copy" title="Copy bom table to clipboard"
               onclick="copyToClipboard()"></button>
        </div>
      </div>
      <div id="dbg"></div>
      <table class="bom" id="bomtable">
        <thead id="bomhead">
        </thead>
        <tbody id="bombody">
        </tbody>
      </table>
    </div>
    <div id="canvasdiv" class="split split-horizontal">
      <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
      <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
    </div>
  </div>
</div>

</body>

</html>
